#pragma once

#include <boost/asio.hpp>
#include <functional>
#include <chrono>

/**
 * EventFD 传递结果回调
 */
using TransferCallback = std::function<void(const boost::system::error_code&, int eventfd)>;
using ConnectionCallback = std::function<void(const boost::system::error_code&, bool connected)>;

/**
 * 传递消息结构 - 扩展版本，支持更多标志性信息
 */
struct TransferMessage {
    char identifier[32];        // 发送者标识符
    pid_t sender_pid;          // 发送者进程ID
    uint64_t timestamp;        // 时间戳
    
    // 新增的标志性信息字段
    char message_type[16];     // 消息类型标志
    char topic_name[64];       // 主题名称
    char custom_data[128];     // 自定义数据/字符串
    uint32_t message_id;       // 消息ID
    uint32_t priority;         // 优先级
    uint32_t flags;            // 自定义标志位
    
    TransferMessage();
    
    // 便利方法
    void set_message_type(const std::string& type);
    void set_topic_name(const std::string& topic);
    void set_custom_data(const std::string& data);
    std::string get_message_type() const;
    std::string get_topic_name() const;
    std::string get_custom_data() const;
};
